package com.zyf.pattern.strategy;

import com.zyf.pattern.strategy.pay.Order;
import com.zyf.pattern.strategy.pay.payport.PayStrategy;
import com.zyf.pattern.strategy.pay.payport.PayType;

import java.util.ArrayList;
import java.util.Comparator;

/**
 * create by yifeng
 */
public class PayStrategyTest {



    public static void main(String[] args) {
        // 省略了吧商品添加到购物车，再从购物车下单
        // 直接从订单开始
        Order order = new Order("1", "2020112231111", 5521.2);
        // 开始支付 支付宝，微信，银行，财付通
        // 每个渠道支付具体的算法是不一样的
        // 基本的算法是固定的

        // 这个值是在支付的时候由用户选择的，枚举的方式策略实现方式
        System.out.println(order.pay(PayType.ALIPAY));
        // 工厂方法的方式实现策略模式
        System.out.println(order.pay(PayStrategy.ALI_PAY));

        // 策略模式和抽象工厂模式使用的方案
        // BeanFactory
        // ListableFactory

        // 以下也是策略模式
        new ArrayList<Object>().sort(new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                return 0;
            }

            @Override
            public boolean equals(Object obj) {
                return false;
            }
        });


    }


}
